﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 迪米特原则
{
    ////需求：实现人关机电脑
    public class Computer
    {
        // 1、保存当前电脑任务
        public void SaveTask()
        {
            Console.WriteLine("保存当前电脑任务");
        }
        public void CloseScreen()
        {
            Console.WriteLine("关闭屏幕");
        }
        public void ShutDown()
        {
            Console.WriteLine("关闭电源");
        }

        public  void CloseComputer()
        {
            this.SaveTask();
            this.CloseScreen();
            this.ShutDown();
        }
    }

    public class Person
    {
        public void CloseComputer(Computer computer)
        {
            // 问题 不符合迪米特原则
            //如果关机需要三十步，computer需要提供30个方法，每个方法之间都有相应的绝对顺序
            //computer.SaveTask();    
            //computer.CloseScreen();
            //computer.ShutDown();

            //------------------------------------

            //改成下面这样
            computer.CloseComputer();
        }
    }
}
